#ifndef _PBVP_PLUGIN_H
#define _PBVP_PLUGIN_H

#include <QString>
#include "maininterface.h"

namespace PBVP {
	/// Base Interface for All Plugins	
	/**
	 * 
	 */
	class Plugin {
	public:
		/// Constructor
		Plugin() {}
		/// Destructor
		virtual ~Plugin() {}

		/// Initialize the plugin
		/**
		 *	call this method when the plugin is being activated, 
		 *	either during startup or at any other time
		 */
		virtual void initialize(MainInterface* mainInterface) {
			m_pMainInterface = mainInterface;
		}
		/// Remove everything related to the plugin from the system
		/**
		 * call this method when the plugin is being unloaded
		**/ 
		virtual void unload() {}

		virtual QString name() const {
			return QString("");
		}

		virtual QString description() const {
			return QString("");
		}

		virtual QString version() const {
			return QString("");
		}

		virtual QString author() const {
			return QString("Xiaoyu Zhang");
		}
	protected:
		MainInterface *m_pMainInterface;
	};
}

#endif
//Q_DECLARE_INTERFACE(PBVP::Plugin, "PBVP.Plugin_Interface/1.0")
